<?php

/**
 * Application level Controller
 *
 * This file is application-wide controller file. You can put all
 * application-wide controller-related methods here.
 *
 * PHP 5
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       app.Controller
 * @since         CakePHP(tm) v 0.2.9
 * @license       MIT License (http://www.opensource.org/licenses/mit-license.php)
 */
App::uses('Controller', 'Controller');

/**
 * Application Controller
 *
 * Add your application-wide methods in the class below, your controllers
 * will inherit them.
 *
 * @package		app.Controller
 * @link		http://book.cakephp.org/2.0/en/controllers.html#the-app-controller
 */
class AppController extends Controller {
    /* public $components = array(
      'DebugKit.Toolbar'
      ); */

    public $helpers = array('Js' => array('Jquery'));
    
    public function beforeRender(){
        if($this->name == 'CakeError'){
            $this->layout = 'error';
        }
    }

    function validar_sesion() {
        if ($this->Session->read('autenticado') != true) {
            $this->_sesion_plana(2);
            if ($this->Session->read('autenticado') != true){
                echo "<script type='text/javascript'>window.location = '" . Router::url(array('controller' => 'Login', 'action' => 'cerrar_session')) . "'; </script>";
                //$this->redirect('../Login');
                return 0;
            }
        } else {
            $t = $this->Session->read('tiendaBD');
            if (empty($t)) {
                $this->_sesion_plana(2);
                $t = $this->Session->read('tiendaBD');
                if (empty($t)) {
                    echo "<script type='text/javascript'>window.location = '" . Router::url(array('controller' => 'Login', 'action' => 'cerrar_session')) . "'; </script>";
                    //$this->redirect('../Login');
                    return 0;
                }
            }
        }
        $id = $this->Session->read('punto_id');
        $pto = 'punto_' . $id . '_cerrado';
        $cierre_de_caja = $this->Session->read($pto);
        $this->set('cierre_de_caja', $cierre_de_caja);
        return 1;
    }

    function validar_cierre($msj = "No se puede realizar la operacion,<br /> el Cierre de Caja para el punto ya fue realizado") {
        $id = $this->Session->read('punto_id');
        $pto = 'punto_' . $id . '_cerrado';
        if ($this->Session->read($pto) > 0) {
            echo $msj;
            $this->autoRender = false;
            return 0;
        } else if (!isset ($_SESSION[$pto])){
            $tiendaSesion = $this->Session->read('tiendaBD');
            $objCierre = $this->Maestro->modelo('punto', 'CierreCaja', $tiendaSesion);
            $objPunto = $this->Maestro->modelo('punto', 'Punto', $tiendaSesion);
            $infoPunto = $objPunto->find('all', array(
                'fields' => array('Punto.id'),
                'conditions' => array('Punto.estatus' => 1),
                'order' => array('Punto.id desc')
            ));

            foreach ($infoPunto as $datos){
                $id=$datos['Punto']['id'];
                $total=$objCierre->find('count',array('conditions' => array('CierreCaja.punto_id' =>$id, 'CAST(CierreCaja.fecha AS DATE) =' => date('Y-m-d'))));
                $this->Session->delete('punto_'.$id.'_cerrado');
                $this->Session->write('punto_'.$id.'_cerrado',$total);
            }
            $this->Session->delete('creo_cierres');
            $this->Session->write('creo_cierres',1);
        }
        return 1;
    }
    
    function permiso($modulo = null, $accion = null, $msj = 'No posees permiso para realizar esta acci&oacute;n') {
        $permiso = $this->Session->read('permiso_usuario');
        if (isset($permiso[$modulo][$accion]) && ($permiso[$modulo][$accion] == 1)) {
            return true;
        } else {
            $this->set('mensaje', $msj);
            $this->render('../Maestros/permiso');
            return false;
        }
    }

    public function buscar_producto($id = null, $tipo_id = null, $programa_id = null, $lapso_id = null, $fecha = null, $orden = null, $cliente_id = 0 ) {
        $campos = array('Material.id', 'Material.nombre', 'Material.codigo', 'Material.costo', 'Material.imagen', 'Unidadmedida.nombre_minimo', 'Unidadmedida.entero');
        $condiciones = array('Material.id' => $id, 'Material.estatus' => 1);
        $data = $this->Material->find('all', array('fields' => $campos, 'conditions' => $condiciones, 'order' => 'Material.id', 'limit' => 100));
        $tipo_id = (empty($tipo_id)) ? 1 : $tipo_id;
        $programa_id = (empty($programa_id)) ? 1 : $programa_id;
        $lapso_id = (empty($lapso_id)) ? 1 : $lapso_id;
        $fecha = (empty($fecha)) ? date('Y-m-d') : $fecha;
        $dat_lapso = $this->Lapso->find('first', array('conditions' => array('Lapso.id' => $lapso_id)));
        $campo = $dat_lapso['Lapso']['campo_dato'];

        $tiendaSesion = $this->Session->read('tiendaBD');
        $objExistencia = $this->Maestro->modelo('punto', 'Existencia', $tiendaSesion);

        for ($i = 0; $i < count($data); $i++) {
            $m_id = $data[$i]['Material']['id'];
            $sql = "select * from fnc_buscar_impuesto($m_id,'$fecha') as iva";
            $result_iva = $this->Material->query($sql);
            $iva = $result_iva[0][0]['iva'];
            $data[$i]['Material']['impuesto'] = $iva;
            $sql = "select fnc_obtener_existencia_material($m_id) as existencia";
            $objExistencias = $objExistencia->query($sql);
            $can = $objExistencias[0][0]['existencia'];

            $sql = "select * from fnc_buscar_precio($tipo_id,$programa_id,$m_id,'$fecha','$campo') as (id bigint, material_id bigint, estatus integer, precio double precision, programa_id bigint, tipo_cliente_id bigint, desde date, hasta date, d0 double precision, d7 double precision, d15 double precision, d30 double precision, d45 double precision, d60 double precision, d90 double precision, d120 double precision , d150 double precision, d180 double precision, d210 double precision, d240 double precision,  d270 double precision,  d300 double precision,  d360 double precision)";
            $precios = $objExistencia->query($sql);
            $pre = $precios[0][0][$campo];

            $sql = "select fnc_buscar_flete($m_id, now()::date) as pre_flete";
            $precios = $objExistencia->query($sql);
            $pre_fle = $precios[0][0]['pre_flete'];

            $fle = ($pre_fle > 0) ? 1 : 0;
            $data[$i]['Material']['existencia'] = $can;
            $data[$i]['Material']['precio'] = $pre;
            $data[$i]['Material']['flete'] = $fle;
            $data[$i]['Material']['monto_flete'] = $pre_fle;
            
            $sql="SELECT ms.maximo, s.nombre as supervisacion, s.dias, vs.venta, vs.desde, vs.hasta, vs.total 
            FROM material_supervisacions ms 
            LEFT JOIN supervisacions s on s.id = ms.supervisacion_id 
            LEFT JOIN venta_supervisadas vs on vs.material_id = ms.material_id and vs.cliente_id = $cliente_id
            WHERE ms.material_id = $m_id";
            $result_super= $this->Material->query($sql);
            
            $maximo = (empty($result_super[0][0]['maximo'])) ? 0 : $result_super[0][0]['maximo'];
            $supervisacion = (empty($result_super[0][0]['supervisacion'])) ? null : $result_super[0][0]['supervisacion'];
            $dias = (empty($result_super[0][0]['dias'])) ? 0 : $result_super[0][0]['dias'];
            $venta = (empty($result_super[0][0]['venta'])) ? 0 : $result_super[0][0]['venta'];
            $desde = (empty($result_super[0][0]['desde'])) ? null : $result_super[0][0]['desde'];
            $hasta = (empty($result_super[0][0]['hasta'])) ? null : $result_super[0][0]['hasta'];
            $total = (empty($result_super[0][0]['total'])) ? 0 : $result_super[0][0]['total'];
            $data[$i]['Material']['maximo'] = $maximo;
            $data[$i]['Material']['supervisacion'] = $supervisacion;
            $data[$i]['Material']['dias'] = $dias;
            $data[$i]['Material']['venta'] = $venta;
            $data[$i]['Material']['desde'] = $desde;
            $data[$i]['Material']['hasta'] = $hasta;
            $data[$i]['Material']['total'] = $total;
            
        }
        return $data;
    }

    function consultarRIF($RIF = NULL, $empresa = NULL) {
        $pref = "J,V,P,E,G";
        $msj[01] = "Recuerde que el RIF debe poseer 10 digitos (12 con los guiones).";
        $msj[02] = "El primer caracter del RIF no puede ser un numero.";
        $msj[03] = "El primer caracter del RIF solo puede ser 'J', 'V', 'P', 'E' o 'G'.";
        $msj[04] = "Los ultimos 9 digitos del RIF solo pueden ser numeros.";
        $msj[05] = "No se puede acceder al servidor en este momento.";
        $msj[06] = "El RIF (" . $RIF . ") no esta asignado a " . strtoupper($empresa) . " o no existe";
        $msj[07] = "El RIF esta perfecto";

        $URL = "http://contribuyente.seniat.gob.ve/BuscaRif/BuscaRif.jsp?p_rif=";
        $result = trim(strtoupper(str_replace("-", "", $RIF)));
        if (strlen($result) != 10) {
            $mensaje = $msj[01];
            $formatearRIF = false;
        } else {
            if (is_numeric(substr($result, 0, 1))) {
                $mensaje = $msj[02];
                $formatearRIF = false;
            } elseif (!strrchr($pref, substr($result, 0, 1))) {
                $mensaje = $msj[03];
                $formatearRIF = false;
            } elseif (!is_numeric(substr($result, 1))) {
                $mensaje = $msj[04];
                $formatearRIF = false;
            } else {
                $RIF = $result;
                $formatearRIF = true;
            }
        }

        if ($formatearRIF) {
            $file = @fopen($URL . $RIF, "r");

            if (!$file) {
                $mensaje = $msj[05];
                return $mensaje;
                exit;
            }

            while (!feof($file)) {
                $consulta = fread($file, 8192);
            }

            $consulta = stristr(strip_tags($consulta), $empresa);
            if (!$consulta) {
                $mensaje = $msj[06];
                return $mensaje;
                exit;
            } else {
                $mensaje = $msj[07];
                return $mensaje;
                exit;
            }

            fclose($file);
        }
    }

}
